package com.example.JcGQS.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.JcGQS.pojo.dto.*;
import com.example.JcGQS.pojo.entity.Purchase;
import com.example.JcGQS.pojo.vo.ApplicantToSubmitVo;
import com.example.JcGQS.pojo.vo.AuditReviewedingVo;
import com.example.JcGQS.pojo.vo.DataRecordVo;
import com.example.JcGQS.pojo.vo.PurchaseVo;
import org.springframework.stereotype.Component;

/**
 * <p>
 * 采购信息表 服务类
 * </p>
 *
 * @author 末日
 * @date 2023/11/21
 */
@Component
public interface PurchaseService  {

    /**
     * 新增采购信息类型
     * @return
     */
    void insertPurchase(InsertPurchaseDTO insertPurchaseDTO,Integer userId );

    /**
     * 批量新增采购信息类型
     * @return
     */
    void insertPurchaseList(InsertPurchaseListDTO insertPurchaseListDTO,Integer userId );
    /**
     * 删除采购信息类型
     * @return
     */
    void deletePurchase(PurchaseId purchaseId,String token);

    /**
     * 修改采购信息类型
     * @return
     */
    void updatePurchase(UpdatePurchaseDTO updatePurchaseDTO, String token);

    /**
     * 修改采购信息状态
     * @return
     */
    void updatePurchaseState(UpdatePurchaseStateDTO updatePurchaseStateDTO, String token);
    /**
     * 获取采购信息类型列表
     * @return
     */
    DataRecordVo<Purchase> PurchaseList(PageDTO pageDTO, String token);

    /**
     * 根据申购人查询(审核中/已下单/采购中/采购完成)采购信息
     */
    DataRecordVo<PurchaseVo> applicantReviewedingPurchase(PageDTO pageDTO, String token);

    /**
     * 根据申购人查询(采购失败并删除/审核失败并删除)采购信息
     */
    DataRecordVo<PurchaseVo> applicantDeletePurchase(PageDTO pageDTO, String token);

    /**
     * 根据申购人查询(待提交)采购信息
     */
    DataRecordVo<ApplicantToSubmitVo> applicantToSubmitPurchase(PageDTO pageDTO, String token);
    /**
     * 根据申购人查询(采购失败/审核失败)采购信息
     */
    DataRecordVo<ApplicantToSubmitVo> applicantToSubmitPurchaseLose(PageDTO pageDTO, String token);

    /**
     * 根据审核人查询(审核中)采购信息
     */
    DataRecordVo<AuditReviewedingVo> auditReviewedingPurchase(PageDTO pageDTO, String token);

    /**
     * 根据审核人查询(审核失败/采购中/已下单/采购完成/采购失败/采购失败并删除/审核失败并删除)采购信息
     */
    DataRecordVo<PurchaseVo> auditUnderPurchasePurchase(PageDTO pageDTO, String token);

    /**
     * 根据采购人来查询(审核中)采购信息
     */
    DataRecordVo<AuditReviewedingVo> buyerReviewedingPurchase(PageDTO pageDTO, String token);

    /**
     * 根据采购人来查询(采购中/已下单)采购信息
     */
    DataRecordVo<PurchaseVo> buyerUnderPurchasePurchase(PageDTO pageDTO, String token);

    /**
     * 根据采购人来查询(采购完成)采购信息
     */
    DataRecordVo<PurchaseVo> buyerPurchaseCompletedPurchase(PageDTO pageDTO, String token);

    /**
     * 根据采购人来查询(采购失败/采购失败并删除)采购信息
     */
    DataRecordVo<PurchaseVo> buyerPurchaseFailedPurchase(PageDTO pageDTO, String token);

    /**
     * 根据仓库管理人来查询(已下单)的采购信息
     */
    DataRecordVo<PurchaseVo> warehousemanHaveOrderPurchase(PageDTO pageDTO, String token);
    /**
     * 根据仓库管理人来查询(退货中)的采购信息
     */
    DataRecordVo<PurchaseVo> warehousemanReturnPurchase(PageDTO pageDTO, String token);

    /**
     * 根据仓库管理人来查询(采购完成)的采购信息
     */
    DataRecordVo<PurchaseVo> warehousemanPurchaseCompletedPurchase(PageDTO pageDTO, String token);

    /**
     * 根据仓库管理人来查询(采购失败/采购失败并删除)的采购信息
     */
    DataRecordVo<PurchaseVo> warehousemanPurchaseFailedPurchase(PageDTO pageDTO, String token);

    /**
     * 根据采购信息查询所有审核人
     */
    void auditListPurchase(PageDTO pageDTO, String token);

    void aVoid();


    /**
     * 根据
     */
   // DataRecordVo<PurchaseVo> a(PageADTO pageADTO, String token);



}
